#include <stdio.h>
#include <pthread.h>
#include <sys/unistd.h>

void *callback(void *arg) {
    // 模拟子线程工作
    printf("Child Thread Start Work!\n");
    sleep(1);
    printf("Child Thread End Work!\n");

    return "Arg Passed By The Child To Main!";
}


int main() {
    // 线程回收函数 (阻塞函数, 直到子线程执行完成之前, 主线程都会阻塞等待)
    // int pthread_join(pthread_t pid, void **arg)
    // pid: 回收子线程的 pid

    pthread_t pid;
    pthread_create(&pid, NULL, callback, NULL);

    // 子线程的传出参数
    void *arg;
    // 主线程会阻塞等待子线程的执行完毕, 并且可以接受子线程的传出参数
    pthread_join(pid, &arg);
    printf("Arg = %s\n", (char *) arg);
    printf("Main Thread Exit\n");

    return 0;
}